import {
  BwStyleFontWeightEnum,
  BwStyleMarginEnum,
  BwStylePaddingEnum,
  BwStyleAlignItemsEnum,
  BwStyleBorderStyleEnum,
  BwStyleCursorEnum,
  BwStyleDisplayEnum,
  BwStyleFlexDirectionEnum,
  BwStyleFontStyleEnum,
  BwStyleJustifyContentEnum,
  BwStyleTextAlignEnum,
  BwStyleTextDecorationEnum,
  BwStyleFontFamilyEnum,
  BwStyleBackgroundSizeEnum,
  BwStyleBackgroundRepeatEnum,
  BwStyleBackgroundAttachmentEnum,
} from '../enum'

/** 通用渲染样式模型 */
export interface BwStyleDefaultProps
  extends BwStyleFontModel,
    BwStyleFlexModel,
    BwStyleMarginModel,
    BwStylePaddingModel,
    BwStyleBorderModel,
    BwStyleRadiusModel,
    BwStyleShadowModel,
    BwStyleBackgroundModel {
  /** 宽度 */
  width?: string

  /** 高度 */
  height?: string

  /** 显示 */
  display?: BwStyleDisplayEnum | string

  /** flex-grow */
  flexGrow?: number

  /** 不透明度 */
  opacity?: number

  /** 鼠标手势 */
  cursor?: BwStyleCursorEnum
}

/** 字体相关样式 */
export interface BwStyleFontModel {
  /** 字体 */
  fontFamily?: BwStyleFontFamilyEnum

  /** 字重 */
  fontWeight?: BwStyleFontWeightEnum

  /** 字体样式 */
  fontStyle?: BwStyleFontStyleEnum

  /** 颜色 */
  color?: string

  /** 字体大小 */
  fontSize?: string

  /** 行高 */
  lineHeight?: string

  /** 对齐 */
  textAlign?: BwStyleTextAlignEnum

  /** 修饰 */
  textDecoration?: BwStyleTextDecorationEnum
}

/** 弹性盒子相关样式 */
export interface BwStyleFlexModel {
  /** 主轴方向 */
  flexDirection?: BwStyleFlexDirectionEnum

  /** 侧轴（纵轴）方向上的对齐方式 */
  alignItems?: BwStyleAlignItemsEnum

  /** 主轴上的子元素排列方式 */
  justifyContent?: BwStyleJustifyContentEnum
}

/** 外边距相关样式 */
export interface BwStyleMarginModel {
  /** 左外边距 */
  marginLeft?: BwStyleMarginEnum | string

  /** 上外边距 */
  marginTop?: BwStyleMarginEnum | string

  /** 右外边距 */
  marginRight?: BwStyleMarginEnum | string

  /** 下外边距 */
  marginBottom?: BwStyleMarginEnum | string
}

/** 内边距相关样式 */
export interface BwStylePaddingModel {
  /** 左内边距 */
  paddingLeft?: BwStylePaddingEnum | string

  /** 上内边距 */
  paddingTop?: BwStylePaddingEnum | string

  /** 右内边距 */
  paddingRight?: BwStylePaddingEnum | string

  /** 下内边距 */
  paddingBottom?: BwStylePaddingEnum | string
}

/** 边框相关样式 */
export interface BwStyleBorderModel {
  /** 边框左 线样式 */
  borderLeftStyle?: BwStyleBorderStyleEnum
  /** 边框左 宽度 */
  borderLeftWidth?: string
  /** 边框左 颜色 */
  borderLeftColor?: string
  /** 边框上 线样式 */
  borderTopStyle?: BwStyleBorderStyleEnum
  /** 边框上 宽度 */
  borderTopWidth?: string
  /** 边框上 颜色 */
  borderTopColor?: string
  /** 边框右 线样式 */
  borderRightStyle?: BwStyleBorderStyleEnum
  /** 边框右 宽度 */
  borderRightWidth?: string
  /** 边框右 颜色 */
  borderRightColor?: string
  /** 边框下 线样式 */
  borderBottomStyle?: BwStyleBorderStyleEnum
  /** 边框下 宽度 */
  borderBottomWidth?: string
  /** 边框下 颜色 */
  borderBottomColor?: string
}

/** 圆角相关样式 */
export interface BwStyleRadiusModel {
  /** 圆角左上角*/
  borderTopLeftRadius?: string

  /** 圆角右上角*/
  borderTopRightRadius?: string

  /** 圆角左下角*/
  borderBottomLeftRadius?: string

  /** 圆角右下角*/
  borderBottomRightRadius?: string
}

/** 阴影相关样式 */
export interface BwStyleShadowModel {
  /** 颜色 */
  shadowColor?: string
  /** x轴水平方向偏移量 */
  shadowX?: string
  /** y轴竖直方向偏移量 */
  shadowY?: string
  /** 阴影模糊半径 */
  shadowBlur?: string
  /** 阴影扩展半径 */
  shadowSpread?: string
}

/** 背景相关样式 */
export interface BwStyleBackgroundModel {
  /** 背景颜色 */
  backgroundColor?: string

  /** 背景图片 */
  backgroundImage?: string

  /** 背景定位 X轴 */
  backgroundPositionX?: string

  /** 背景定位 Y轴 */
  backgroundPositionY?: string

  /** 背景大小 */
  backgroundSize?: BwStyleBackgroundSizeEnum

  /** 背景大小 宽 */
  backgroundSizeWidth?: string

  /** 背景大小 高 */
  backgroundSizeHeight?: string

  /** 背景平铺 */
  backgroundRepeat?: BwStyleBackgroundRepeatEnum

  /** 背景固定 */
  backgroundAttachment?: BwStyleBackgroundAttachmentEnum
}
